app: abstract which modifiers are used for extending and modifying selections
authorMichael Natterer <mitch@lanedo.com>
Sat, 17 Sep 2011 18:05:33 +0000 (20:05 +0200)
committerMichael Natterer <mitch@gimp.org>
Mon, 26 Sep 2011 14:01:50 +0000 (16:01 +0200)
which are SHIFT and MOD2 on the Mac, and SHIFT and CONTROL otherwise.
Use the new define all over the place and rename variables and
members to not say "shift" or "control".

gtk/gtkentry.c
gtk/gtkiconview.c
gtk/gtkprivate.h
gtk/gtktextview.c
gtk/gtktreeview.c

index 4e2e9266218d73ec89c4e8195065bccf44b335ab..21c0ee22621011f2a799516de64c0f820f32cbbc 100644 (file)
@@ -3781,7 +3781,7 @@ gtk_entry_button_press (GtkWidget      *widget,
       priv->select_words = FALSE;
       priv->select_lines = FALSE;
 
-      if (event->state & GDK_SHIFT_MASK)
+      if (event->state & GTK_EXTEND_SELECTION_MOD_MASK)
        {
          _gtk_entry_reset_im_context (entry);
          
index 7c4b41b0aee62429ad23808e1193bf3cd8762667..61175b48c8cbf6f7e42e78613fcb829bac642d45 100644 (file)
@@ -178,8 +178,8 @@ struct _GtkIconViewPrivate
   guint reorderable : 1;
   guint empty_view_drop :1;
 
-  guint ctrl_pressed : 1;
-  guint shift_pressed : 1;
+  guint modify_selection_pressed : 1;
+  guint extend_selection_pressed : 1;
 
   guint draw_focus : 1;
 
@@ -2043,7 +2043,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
              gtk_icon_view_set_cursor_item (icon_view, item, cursor_cell);
            }
          else if (icon_view->priv->selection_mode == GTK_SELECTION_MULTIPLE &&
-                  (event->state & GDK_SHIFT_MASK))
+                  (event->state & GTK_EXTEND_SELECTION_MOD_MASK))
            {
              gtk_icon_view_unselect_all_internal (icon_view);
 
@@ -2060,7 +2060,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
            {
              if ((icon_view->priv->selection_mode == GTK_SELECTION_MULTIPLE ||
                  ((icon_view->priv->selection_mode == GTK_SELECTION_SINGLE) && item->selected)) &&
-                 (event->state & GDK_CONTROL_MASK))
+                 (event->state & GTK_MODIFY_SELECTION_MOD_MASK))
                {
                  item->selected = !item->selected;
                  gtk_icon_view_queue_draw_item (icon_view, item);
@@ -2107,7 +2107,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
       else
        {
          if (icon_view->priv->selection_mode != GTK_SELECTION_BROWSE &&
-             !(event->state & GDK_CONTROL_MASK))
+             !(event->state & GTK_MODIFY_SELECTION_MOD_MASK))
            {
              dirty = gtk_icon_view_unselect_all_internal (icon_view);
            }
@@ -3566,10 +3566,10 @@ gtk_icon_view_real_move_cursor (GtkIconView     *icon_view,
 
   if (gtk_get_current_event_state (&state))
     {
-      if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
-        icon_view->priv->ctrl_pressed = TRUE;
-      if ((state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
-        icon_view->priv->shift_pressed = TRUE;
+      if ((state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
+        icon_view->priv->modify_selection_pressed = TRUE;
+      if ((state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
+        icon_view->priv->extend_selection_pressed = TRUE;
     }
   /* else we assume not pressed */
 
@@ -3592,8 +3592,8 @@ gtk_icon_view_real_move_cursor (GtkIconView     *icon_view,
       g_assert_not_reached ();
     }
 
-  icon_view->priv->ctrl_pressed = FALSE;
-  icon_view->priv->shift_pressed = FALSE;
+  icon_view->priv->modify_selection_pressed = FALSE;
+  icon_view->priv->extend_selection_pressed = FALSE;
 
   icon_view->priv->draw_focus = TRUE;
 
@@ -3792,8 +3792,8 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view,
       return;
     }
 
-  if (icon_view->priv->ctrl_pressed ||
-      !icon_view->priv->shift_pressed ||
+  if (icon_view->priv->modify_selection_pressed ||
+      !icon_view->priv->extend_selection_pressed ||
       !icon_view->priv->anchor_item ||
       icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
     icon_view->priv->anchor_item = item;
@@ -3801,7 +3801,7 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view,
   cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
   gtk_icon_view_set_cursor_item (icon_view, item, cell);
 
-  if (!icon_view->priv->ctrl_pressed &&
+  if (!icon_view->priv->modify_selection_pressed &&
       icon_view->priv->selection_mode != GTK_SELECTION_NONE)
     {
       dirty = gtk_icon_view_unselect_all_internal (icon_view);
@@ -3848,15 +3848,15 @@ gtk_icon_view_move_cursor_page_up_down (GtkIconView *icon_view,
   if (!item)
     return;
 
-  if (icon_view->priv->ctrl_pressed ||
-      !icon_view->priv->shift_pressed ||
+  if (icon_view->priv->modify_selection_pressed ||
+      !icon_view->priv->extend_selection_pressed ||
       !icon_view->priv->anchor_item ||
       icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
     icon_view->priv->anchor_item = item;
 
   gtk_icon_view_set_cursor_item (icon_view, item, NULL);
 
-  if (!icon_view->priv->ctrl_pressed &&
+  if (!icon_view->priv->modify_selection_pressed &&
       icon_view->priv->selection_mode != GTK_SELECTION_NONE)
     {
       dirty = gtk_icon_view_unselect_all_internal (icon_view);
@@ -3937,8 +3937,8 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view,
       return;
     }
 
-  if (icon_view->priv->ctrl_pressed ||
-      !icon_view->priv->shift_pressed ||
+  if (icon_view->priv->modify_selection_pressed ||
+      !icon_view->priv->extend_selection_pressed ||
       !icon_view->priv->anchor_item ||
       icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
     icon_view->priv->anchor_item = item;
@@ -3946,7 +3946,7 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view,
   cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
   gtk_icon_view_set_cursor_item (icon_view, item, cell);
 
-  if (!icon_view->priv->ctrl_pressed &&
+  if (!icon_view->priv->modify_selection_pressed &&
       icon_view->priv->selection_mode != GTK_SELECTION_NONE)
     {
       dirty = gtk_icon_view_unselect_all_internal (icon_view);
@@ -3985,15 +3985,15 @@ gtk_icon_view_move_cursor_start_end (GtkIconView *icon_view,
   if (!item)
     return;
 
-  if (icon_view->priv->ctrl_pressed ||
-      !icon_view->priv->shift_pressed ||
+  if (icon_view->priv->modify_selection_pressed ||
+      !icon_view->priv->extend_selection_pressed ||
       !icon_view->priv->anchor_item ||
       icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
     icon_view->priv->anchor_item = item;
 
   gtk_icon_view_set_cursor_item (icon_view, item, NULL);
 
-  if (!icon_view->priv->ctrl_pressed &&
+  if (!icon_view->priv->modify_selection_pressed &&
       icon_view->priv->selection_mode != GTK_SELECTION_NONE)
     {
       dirty = gtk_icon_view_unselect_all_internal (icon_view);
index d92affe6b2f6c915cc6b30e817c69125e7d3cdfa..00e9bbe9d20642deefbd5f104150af2b9679f370 100644 (file)
@@ -77,6 +77,14 @@ const gchar *_gtk_get_data_prefix ();
 #define GTK_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK)
 #endif
 
+#ifndef GDK_WINDOWING_QUARTZ
+#define GTK_EXTEND_SELECTION_MOD_MASK GDK_SHIFT_MASK
+#define GTK_MODIFY_SELECTION_MOD_MASK GDK_CONTROL_MASK
+#else
+#define GTK_EXTEND_SELECTION_MOD_MASK GDK_SHIFT_MASK
+#define GTK_MODIFY_SELECTION_MOD_MASK GDK_MOD2_MASK
+#endif
+
 gboolean _gtk_fnmatch      (const char *pattern,
                             const char *string,
                             gboolean    no_leading_period);
index 0fd03c016396712021ac4c42258a74d720cf232d..30859660faf6482393573964547eba69f171a36f 100644 (file)
@@ -4561,7 +4561,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
           if (gtk_text_buffer_get_selection_bounds (get_buffer (text_view),
                                                     &start, &end) &&
               gtk_text_iter_in_range (&iter, &start, &end) &&
-              !(event->state & GDK_SHIFT_MASK))
+              !(event->state & GTK_EXTEND_SELECTION_MOD_MASK))
             {
               priv->drag_start_x = event->x;
               priv->drag_start_y = event->y;
@@ -6491,7 +6491,7 @@ gtk_text_view_start_selection_drag (GtkTextView       *text_view,
   orig_start = ins;
   orig_end = bound;
 
-  if (button->state & GDK_SHIFT_MASK)
+  if (button->state & GTK_EXTEND_SELECTION_MOD_MASK)
     {
       /* Extend selection */
       GtkTextIter old_ins, old_bound;
index 44ecbbd26dc219abf37c84944af6e2c15a66027d..43c3d60cbda0b9b3ca32bf5273874ed4031d1c35 100644 (file)
@@ -399,8 +399,8 @@ struct _GtkTreeViewPrivate
   gint rubber_band_status;
   gint rubber_band_x;
   gint rubber_band_y;
-  gint rubber_band_shift;
-  gint rubber_band_ctrl;
+  gint rubber_band_extend;
+  gint rubber_band_modify;
 
   GtkRBNode *rubber_band_start_node;
   GtkRBTree *rubber_band_start_tree;
@@ -464,8 +464,8 @@ struct _GtkTreeViewPrivate
   /* for DnD */
   guint empty_view_drop : 1;
 
-  guint ctrl_pressed : 1;
-  guint shift_pressed : 1;
+  guint modify_selection_pressed : 1;
+  guint extend_selection_pressed : 1;
 
   guint init_hadjust_value : 1;
 
@@ -3044,10 +3044,10 @@ gtk_tree_view_button_press (GtkWidget      *widget,
         {
           GtkCellRenderer *focus_cell;
 
-          if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
-            tree_view->priv->ctrl_pressed = TRUE;
-          if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
-            tree_view->priv->shift_pressed = TRUE;
+          if ((event->state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
+            tree_view->priv->modify_selection_pressed = TRUE;
+          if ((event->state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
+            tree_view->priv->extend_selection_pressed = TRUE;
 
           /* We update the focus cell here, this is also needed if the
            * column does not contain an editable cell.  In this case,
@@ -3063,12 +3063,12 @@ gtk_tree_view_button_press (GtkWidget      *widget,
           if (focus_cell)
             gtk_tree_view_column_focus_cell (column, focus_cell);
 
-          if (event->state & GDK_CONTROL_MASK)
+          if (event->state & GTK_MODIFY_SELECTION_MOD_MASK)
             {
               gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
               gtk_tree_view_real_toggle_cursor_row (tree_view);
             }
-          else if (event->state & GDK_SHIFT_MASK)
+          else if (event->state & GTK_EXTEND_SELECTION_MOD_MASK)
             {
               gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
               gtk_tree_view_real_select_cursor_row (tree_view, FALSE);
@@ -3078,8 +3078,8 @@ gtk_tree_view_button_press (GtkWidget      *widget,
               gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
             }
 
-          tree_view->priv->ctrl_pressed = FALSE;
-          tree_view->priv->shift_pressed = FALSE;
+          tree_view->priv->modify_selection_pressed = FALSE;
+          tree_view->priv->extend_selection_pressed = FALSE;
         }
 
       /* the treeview may have been scrolled because of _set_cursor,
@@ -3111,10 +3111,10 @@ gtk_tree_view_button_press (GtkWidget      *widget,
              tree_view->priv->rubber_band_y = event->y + tree_view->priv->dy;
              tree_view->priv->rubber_band_status = RUBBER_BAND_MAYBE_START;
 
-             if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
-               tree_view->priv->rubber_band_ctrl = TRUE;
-             if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
-               tree_view->priv->rubber_band_shift = TRUE;
+             if ((event->state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
+               tree_view->priv->rubber_band_modify = TRUE;
+             if ((event->state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
+               tree_view->priv->rubber_band_extend = TRUE;
            }
         }
 
@@ -4118,8 +4118,8 @@ gtk_tree_view_stop_rubber_band (GtkTreeView *tree_view)
 
   /* Clear status variables */
   tree_view->priv->rubber_band_status = RUBBER_BAND_OFF;
-  tree_view->priv->rubber_band_shift = 0;
-  tree_view->priv->rubber_band_ctrl = 0;
+  tree_view->priv->rubber_band_extend = FALSE;
+  tree_view->priv->rubber_band_modify = FALSE;
 
   tree_view->priv->rubber_band_start_node = NULL;
   tree_view->priv->rubber_band_start_tree = NULL;
@@ -4164,9 +4164,9 @@ gtk_tree_view_update_rubber_band_selection_range (GtkTreeView *tree_view,
 
       if (select)
         {
-         if (tree_view->priv->rubber_band_shift)
-           GTK_RBNODE_SET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
-         else if (tree_view->priv->rubber_band_ctrl)
+         if (tree_view->priv->rubber_band_extend)
+            GTK_RBNODE_SET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
+         else if (tree_view->priv->rubber_band_modify)
            {
              /* Toggle the selection state */
              if (GTK_RBNODE_FLAG_SET (start_node, GTK_RBNODE_IS_SELECTED))
@@ -4180,9 +4180,9 @@ gtk_tree_view_update_rubber_band_selection_range (GtkTreeView *tree_view,
       else
         {
          /* Mirror the above */
-         if (tree_view->priv->rubber_band_shift)
+         if (tree_view->priv->rubber_band_extend)
            GTK_RBNODE_UNSET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
-         else if (tree_view->priv->rubber_band_ctrl)
+         else if (tree_view->priv->rubber_band_modify)
            {
              /* Toggle the selection state */
              if (GTK_RBNODE_FLAG_SET (start_node, GTK_RBNODE_IS_SELECTED))
@@ -8572,10 +8572,10 @@ gtk_tree_view_real_move_cursor (GtkTreeView       *tree_view,
 
   if (gtk_get_current_event_state (&state))
     {
-      if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
-        tree_view->priv->ctrl_pressed = TRUE;
-      if ((state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
-        tree_view->priv->shift_pressed = TRUE;
+      if ((state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
+        tree_view->priv->modify_selection_pressed = TRUE;
+      if ((state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
+        tree_view->priv->extend_selection_pressed = TRUE;
     }
   /* else we assume not pressed */
 
@@ -8599,8 +8599,8 @@ gtk_tree_view_real_move_cursor (GtkTreeView       *tree_view,
       g_assert_not_reached ();
     }
 
-  tree_view->priv->ctrl_pressed = FALSE;
-  tree_view->priv->shift_pressed = FALSE;
+  tree_view->priv->modify_selection_pressed = FALSE;
+  tree_view->priv->extend_selection_pressed = FALSE;
 
   return TRUE;
 }
@@ -10190,7 +10190,7 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view,
 
   if (selection_count == 0
       && gtk_tree_selection_get_mode (tree_view->priv->selection) != GTK_SELECTION_NONE
-      && !tree_view->priv->ctrl_pressed
+      && !tree_view->priv->modify_selection_pressed
       && selectable)
     {
       /* Don't move the cursor, but just select the current node */
@@ -10263,7 +10263,7 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view,
     {
       gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
 
-      if (!tree_view->priv->shift_pressed)
+      if (!tree_view->priv->extend_selection_pressed)
         {
           if (! gtk_widget_keynav_failed (GTK_WIDGET (tree_view),
                                           count < 0 ?
@@ -10629,7 +10629,7 @@ gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view,
       return FALSE;
     }
 
-  if (!tree_view->priv->shift_pressed && start_editing &&
+  if (!tree_view->priv->extend_selection_pressed && start_editing &&
       tree_view->priv->focus_column)
     {
       if (gtk_tree_view_start_editing (tree_view, cursor_path, FALSE))
@@ -10639,9 +10639,9 @@ gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view,
        }
     }
 
-  if (tree_view->priv->ctrl_pressed)
+  if (tree_view->priv->modify_selection_pressed)
     mode |= GTK_TREE_SELECT_MODE_TOGGLE;
-  if (tree_view->priv->shift_pressed)
+  if (tree_view->priv->extend_selection_pressed)
     mode |= GTK_TREE_SELECT_MODE_EXTEND;
 
   _gtk_tree_selection_internal_select_node (tree_view->priv->selection,
@@ -10665,7 +10665,7 @@ gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view,
   gtk_widget_grab_focus (GTK_WIDGET (tree_view));
   _gtk_tree_view_queue_draw_node (tree_view, cursor_tree, cursor_node, NULL);
 
-  if (!tree_view->priv->shift_pressed)
+  if (!tree_view->priv->extend_selection_pressed)
     gtk_tree_view_row_activated (tree_view, cursor_path,
                                  tree_view->priv->focus_column);
     
@@ -10803,8 +10803,8 @@ gtk_tree_view_real_select_cursor_parent (GtkTreeView *tree_view)
 
       if (gtk_get_current_event_state (&state))
        {
-         if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
-           tree_view->priv->ctrl_pressed = TRUE;
+         if ((state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
+           tree_view->priv->modify_selection_pressed = TRUE;
        }
 
       gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, FALSE);
@@ -10814,7 +10814,7 @@ gtk_tree_view_real_select_cursor_parent (GtkTreeView *tree_view)
       gtk_tree_view_queue_draw_path (tree_view, cursor_path, NULL);
       gtk_tree_path_free (cursor_path);
 
-      tree_view->priv->ctrl_pressed = FALSE;
+      tree_view->priv->modify_selection_pressed = FALSE;
 
       return TRUE;
     }
@@ -13140,11 +13140,11 @@ gtk_tree_view_real_set_cursor (GtkTreeView     *tree_view,
       GtkRBTree *new_tree = NULL;
       GtkRBNode *new_node = NULL;
 
-      if (clear_and_select && !tree_view->priv->ctrl_pressed)
+      if (clear_and_select && !tree_view->priv->modify_selection_pressed)
         {
           GtkTreeSelectMode mode = 0;
 
-          if (tree_view->priv->shift_pressed)
+          if (tree_view->priv->extend_selection_pressed)
             mode |= GTK_TREE_SELECT_MODE_EXTEND;
 
           _gtk_tree_selection_internal_select_node (tree_view->priv->selection,